]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Create AppFolderIcons for selected categories
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 31 Jan 2013 16:14:13 +0000 (17:14 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 19 Feb 2013 23:18:56 +0000 (00:18 +0100)
App folders are intended for grouping some applications, not to
assign a category to every single application, so we will only
create folders for a selected subset of the existing categories.
Software/Alacarte will eventually allow to create/modify those
folders, so store the setting in GSettings so that it can be
shared with those applications.

https://bugzilla.gnome.org/show_bug.cgi?id=694192

data/org.gnome.shell.gschema.xml.in.in
js/ui/appDisplay.js

index abecd37caa85c325f7761ca2627fc31f8f0e1dce..bacb6b1c8ca0ddbffd2080fd5faf176c58545088 100644 (file)
         will be displayed in the favorites area.
       </_description>
     </key>
+    <key name="app-folder-categories" type="as">
+      <default>[ 'Utilities', 'Sundry' ]</default>
+      <_summary>List of categories that should be displayed as folders</_summary>
+      <_description>
+        Each category name in this list will be represented as folder in the
+        application view, rather than being displayed inline in the main view.
+      </_description>
+    </key>
     <key name="command-history" type="as">
       <default>[]</default>
       <_summary>History for command (Alt-F2) dialog</_summary>
index 3aad5b022b77a07d45b5a62a5f3ca736dec264c6..79f88b4fbfa4424a7bd85d9b8289037ad17c0cbc 100644 (file)
@@ -267,6 +267,9 @@ const AppDisplay = new Lang.Class({
         this._appSystem.connect('installed-changed', Lang.bind(this, function() {
             Main.queueDeferredWork(this._workId);
         }));
+        global.settings.connect('changed::app-folder-categories', Lang.bind(this, function() {
+            Main.queueDeferredWork(this._workId);
+        }));
 
         let box = new St.BoxLayout();
         this.actor = new St.Bin({ child: box,
@@ -297,13 +300,17 @@ const AppDisplay = new Lang.Class({
 
         var iter = root.iter();
         var nextType;
+        let folderCategories = global.settings.get_strv('app-folder-categories');
         while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
             if (nextType == GMenu.TreeItemType.DIRECTORY) {
                 var dir = iter.get_directory();
                 if (dir.get_is_nodisplay())
                     continue;
 
-                _loadCategory(dir, this._view);
+                if (folderCategories.indexOf(dir.get_menu_id()) != -1)
+                    this._view.addFolder(dir);
+                else
+                    _loadCategory(dir, this._view);
             }
         }
         this._view.loadGrid();